home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 09 - 1993 / 09.07 Jul 93 / Bedrock Header Files / Support Includes / BRSyFile.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-19  |  10.4 KB  |  351 lines  |  [TEXT/MPS ]

  1. /*========================================================================================
  2.   / 
  3.   /      File:        BRSyFile.h
  4.   /      Release Version:    $ 1.0d1 $
  5.   / 
  6.   /      Creation Date:    November 5, 1989
  7.   / 
  8.   /      COPYRIGHT 1993 SYMANTEC CORPORATION. ALL RIGHTS RESERVED. UNPUBLISHED -- RIGHTS
  9.   /      RESERVED UNDER THE COPYRIGHT LAWS OF THE UNITED STATES. USE OF COPYRIGHT NOTICE IS
  10.   /      PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION OR DISCLOSURE.
  11.   / 
  12.   /      THIS SOFTWARE CONTAINS PROPRIETARY AND CONFIDENTIAL INFORMATION OF SYMANTEC
  13.   /      CORPORATION. USE, DISCLOSURE, OR REPRODUCTION IS PROHIBITED WITHOUT THE PRIOR
  14.   /      EXPRESS WRITTEN PERMISSION OF SYMANTEC CORPORATION.
  15.   / 
  16.   /      RESTRICTED RIGHTS LEGEND
  17.   /      Use, duplication, or disclosure by the Government is subject to restrictions as Set
  18.   /      forth in subparagraph (c)(l)(ii) of the Rights in Technical Data and Computer
  19.   /      Software clause at DFARS 252.227-7013. Symantec Corporation, 10201 Torre Avenue,
  20.   /      Cupertino, CA 95014.
  21.   / 
  22.   /=======================================================================================*/
  23.  
  24.  
  25. /*--------------------------------------------------------------------------------------
  26. //    This file is part of the old international implementation.
  27. //    The Bedrock team is in the process of designing a totally new approach.
  28. //    For more details on the new approach please look in the 
  29. //    "…:BEDROCK:INTL:INCLUDES:" folder.
  30. //    The new approach departs from the close tie to characters and characterSets.
  31. //    Instead it bases all internationalization efforts on locale based
  32. //    characters, and character sets, with Unicode as the central set.
  33. /--------------------------------------------------------------------------------------*/
  34.  
  35.  
  36.  
  37. #ifndef BRSYFILE_H
  38. #define BRSYFILE_H
  39.  
  40. #ifndef BRSUPDEF_H
  41. #include "BRSupDef.h"
  42. #endif
  43.  
  44. #ifndef BRTIME_H
  45. #include "BRTime.h"
  46. #endif
  47.  
  48. #ifndef BRSTR_H
  49. #include "BRStr.h"
  50. #endif
  51.  
  52. #ifdef __cplusplus
  53. extern "C"
  54. {
  55. #endif
  56.  
  57. #define BR_FILE_DRIVESEPARATOR        ':'
  58. #define BR_FILE_PATHSEPARATOR         '\\'
  59. #define BR_FILE_ISDRIVESEPARATOR(ch)    ((ch) == ':')
  60. #define BR_FILE_ISPATHSEPARATOR(ch)    ((ch) == '/' || (ch) == '\\')
  61.  
  62.  
  63.     /* Attributes --- */
  64.     /*Type Attribute*/
  65.  
  66.     /*Used for the creation or search for files*/
  67.  
  68. typedef unsigned short BR_FileSystemAttribute;
  69.  
  70. #define BR_FileSysAttr_kReadWrite     (0x0000)
  71. #define BR_FileSysAttr_kNormal        (0x0000)
  72. #define BR_FileSysAttr_kReadOnly        (0x0001)
  73. #define BR_FileSysAttr_kHidden        (0x0002)
  74. #define BR_FileSysAttr_kSystem        (0x0004)
  75. #define BR_FileSysAttr_kDirectories   (0x0010)
  76. #define BR_FileSysAttr_kArchive        (0x0020)
  77. #define BR_FileSysAttr_kDrives        (0x4000)
  78. #define BR_FileSysAttr_kExclusive     (0x8000)
  79. #define BR_FileSysAttr_kDrivesAndDirectories     (BR_FileSysAttr_kDirectories|BR_FileSysAttr_kDrives|BR_FileSysAttr_kExclusive)
  80. #define BR_FileSysAttr_kStationary     (0x0008)
  81. #define BR_FileSysAttr_kAlias         (0x0040)
  82.  
  83.  
  84.     /*Action*/
  85.  
  86.     /*Use to specify action on Open command, Open and Create mean to first BR_TRY*/
  87.     /*to Open the file as is, if this fails because the file does not exist then*/
  88.     /*go ahead and Create the file*/
  89.  
  90. typedef unsigned short BR_FileOpenAction;
  91.  
  92. #define BR_FileOpenAction_kCreate        OF_CREATE
  93. #define BR_FileOpenAction_kOpen        (0x0004)
  94. #define BR_FileOpenAction_kTruncate        (0x0008)
  95. #define BR_FileOpenAction_kCreateTruncate    (BR_FileOpenAction_kCreate | BR_FileOpenAction_kOpen | BR_FileOpenAction_kTruncate)
  96.  
  97.     /*Access*/
  98.     /*Specifies the mode of operation the current application wishes to exercise*/
  99.     /*on this file, and what rights it wishes to give other applications while*/
  100.     /*this application has the file Open*/
  101.  
  102. typedef unsigned short BR_FileAccessMode;
  103. #define BR_FileAccessMode_kReadOnly        OF_READ
  104. #define BR_FileAccessMode_kReadWrite        OF_READWRITE
  105. #define BR_FileAccessMode_kWriteOnly        OF_WRITE
  106.  
  107. typedef unsigned short BR_FileSharingMode;
  108. #define BR_FileShareMode_kDenyNone            OF_SHARE_DENY_NONE
  109. #define BR_FileShareMode_kDenyRead            OF_SHARE_DENY_READ
  110. #define BR_FileShareMode_kDenyWrite        OF_SHARE_DENY_WRITE
  111. #define BR_FileShareMode_kDenyReadWrite    OF_SHARE_EXCLUSIVE
  112.  
  113. #define BR_FileShareMode_kCompatible        OF_SHARE_COMPAT
  114. #define BR_FileShareMode_kExclusive        OF_SHARE_EXCLUSIVE
  115.  
  116.  
  117.     /*Misc*/
  118.  
  119. typedef unsigned short BR_FileSystemUsageMode;
  120.  
  121. #define BR_FileSysUsageMode_kReadVerify    (0x0001)
  122. #define BR_FileSysUsageMode_kReturnAllErrors    (0x0002)
  123. #define BR_FileSysUsageMode_kWriteThrough    (0x0004)
  124.  
  125.  
  126.     /*Seek Commands*/
  127.  
  128. typedef enum
  129. {
  130.     BR_FilePosMode_kFromStart = 0, BR_FilePosMode_kFromEndOfFile = 2, BR_FilePosMode_kFromCurrent = 1
  131. } BR_FilePositionMode;
  132.  
  133.     /*Copy Command*/
  134.  
  135. typedef enum
  136. {
  137.     BR_FileSysCopyMode_kNoExisting,                        /* Don't Copy if target exists */
  138.     BR_FileSysCopyMode_kExisting,                            /* Copy even if target exists */
  139.     BR_FileSysCopyMode_kAppend                            /* Append to target */
  140. } BR_FileSystemCopyMode;
  141.  
  142.  
  143.     /*File System Error Codes -- ***Partial List*** */
  144.  
  145. #define BR_DOS_MAXFILEROOTLEN 9
  146. #define BR_DOS_MAXFILENAME 13
  147.  
  148. typedef enum
  149. {
  150.     BR_FileSysErr_kNoError,
  151.     BR_FileSysErr_kFileDoesNotExist,
  152.     BR_FileSysErr_kAccessDenied,
  153.     BR_FileSysErr_kDiskFull,
  154.     BR_FileSysErr_kInvalidHandle,
  155.     BR_FileSysErr_kFileLockViolation, 
  156.     BR_FileSysErr_kCanNotCreate,
  157.     BR_FileSysErr_kDriveLocked,
  158.     BR_FileSysErr_kInvalidAccess, 
  159.     BR_FileSysErr_kInvalidParameter,
  160.     BR_FileSysErr_kPathNotFound, 
  161.     BR_FileSysErr_kShareBufferExceeded, 
  162.     BR_FileSysErr_kShareViolation,
  163.     BR_FileSysErr_kTooManyFilesOpen,
  164.     BR_FileSysErr_kDataError,
  165.     BR_FileSysErr_kInvalidDriveSpecification,
  166.     BR_FileSysErr_kInvalidFileNameRoot,
  167.     BR_FileSysErr_kUnknown
  168. } BR_FileSystemError, FAR* BR_FileSystemErrorPtr;
  169.  
  170.  
  171. #define  BR_FileTokenType_kDriveSeparator    1
  172. #define  BR_FileTokenType_kNetworkSpecification     2
  173. #define  BR_FileTokenType_kPathSeparator     3
  174. #define  BR_FileTokenType_kExtensionSeparator        4
  175.  
  176. typedef unsigned long BR_FileMeasurmentUnit;
  177.  
  178.  
  179. /*========================================================================================
  180. /    struct BR_SFileInfo
  181. /
  182. /    <comments>
  183. /    <Invariants>
  184. /========================================================================================*/
  185. typedef struct BR_SFileInfo
  186. {
  187.     BR_SDateTime fFileCreationDateTime;
  188.     BR_SDateTime fFileModificationDateTime;
  189.     BR_SDateTime fFileAccessDateTime;
  190.     BR_VMHandle fFileName;
  191.     BR_FileMeasurmentUnit fFileSize;
  192.     BR_FileMeasurmentUnit fFileAllocation;
  193.     BR_FileSystemAttribute fFileAttribute;
  194.     BR_FileAccessMode fFileAccess;
  195.     BR_FileSharingMode fFileShare;
  196.     BR_FileSystemUsageMode fFileUsage;
  197.     BR_VMHandle fFileType;
  198.     BR_VMHandle fFileCreator;
  199.     /* the fNext 3 items are specific to WINDOWS */
  200.     BR_FileSystemError fLastError;
  201.     BR_Boolean fIsTemporaryFile;
  202.     BR_PlatformHandle fSystemHandle;
  203. } BR_SFileInfo, FAR * BR_SFileInfoPtr;
  204.  
  205.  
  206.     /*
  207.       Open must return an fError code within the procedure since it otherwise
  208.       would not return a handle which is needed for BR_FileError.    This differs
  209.       from the BR_DOS style environment since we are multi-tasking, we must always
  210.       associated an fError with its own particular file.
  211.     */
  212.  
  213. BR_EXPORTENTRY(BR_FileSystemError) BR_Open (
  214.     BR_FileHandle FAR* filehandle,
  215.     BR_BedString filename,
  216.     BR_FileSystemAttribute fFileAttribute,
  217.     BR_FileOpenAction openAction,
  218.     BR_FileAccessMode accessMode,
  219.     BR_FileSharingMode shareMode,
  220.     BR_FileSystemUsageMode fFileUsage,
  221.     BR_FileMeasurmentUnit filesize);
  222.     
  223.     
  224. BR_EXPORTENTRY (BR_FileSystemError) BR_Close (BR_FileHandle hf);
  225.  
  226. BR_EXPORTENTRY (BR_FileSystemError) BR_Flush(BR_FileHandle hf);
  227.  
  228. BR_EXPORTENTRY (BR_FileSystemError) BR_FileError(BR_FileHandle hf);
  229.  
  230. BR_EXPORTENTRY (BR_FileSystemError) BR_QueryFileInfo(BR_FileHandle hf, BR_SFileInfoPtr fInfo);
  231.  
  232. BR_EXPORTENTRY (BR_FileSystemError) BR_SetFileInfo(BR_FileHandle hf, BR_SFileInfoPtr fInfo);
  233.  
  234. BR_EXPORTENTRY (void) BR_QueryPathSepChar (BR_BedString s, unsigned short maxlen);
  235.  
  236.  
  237. BR_EXPORTENTRY (BR_FileSystemError) BR_GetAppInfo (
  238.     BR_BedString groupStr, 
  239.     BR_BedString itemStr, 
  240.     BR_BedString info, 
  241.     BS_StringLength maxInfoLen);
  242.  
  243. BR_EXPORTENTRY (BR_FileSystemError) BR_SetAppInfo(
  244.     BR_BedString groupStr, 
  245.     BR_BedString itemStr, 
  246.     BR_BedString data);
  247.  
  248.  
  249. BR_EXPORTENTRY (BR_FileSystemError) BR_GetSystemFileHandle (BR_FileHandle hf, HFILE FAR * sysf);
  250.  
  251. BR_EXPORTENTRY (BR_FileSystemError) BR_GetTemporaryFile (
  252.     BR_FileHandle FAR * hf, 
  253.     BR_FileAccessMode accessMode, 
  254.     BR_FileSharingMode shareMode, 
  255.     BR_FileSystemUsageMode fFileUsage, 
  256.     BR_FileMeasurmentUnit minSizeNeeded);
  257.  
  258.  
  259. BR_EXPORTENTRY (BR_FileSystemError) BR_FileRangeLock(
  260.     BR_FileHandle hf, 
  261.     BR_FileMeasurmentUnit Offset, 
  262.     BR_FileMeasurmentUnit range);
  263.  
  264. BR_EXPORTENTRY (BR_FileSystemError) BR_FileRangeUnLock(
  265.     BR_FileHandle hf, 
  266.     BR_FileMeasurmentUnit Offset, 
  267.     BR_FileMeasurmentUnit range);
  268.  
  269.  
  270. BR_EXPORTENTRY (BR_FileSystemError) BR_CopyFile (
  271.     BR_BedString filename1, 
  272.     BR_BedString filename2, 
  273.     BR_FileSystemCopyMode mode);
  274.  
  275. BR_EXPORTENTRY (BR_FileSystemError) BR_Delete(BR_BedString filename);
  276.  
  277. BR_EXPORTENTRY (BR_FileSystemError) BR_Rename(BR_BedString filename1, BR_BedString filename2);
  278.  
  279. BR_EXPORTENTRY (BR_FileSystemError) BR_MoveFile(BR_BedString filename1, BR_BedString filename2);
  280.  
  281. BR_EXPORTENTRY (BR_Boolean) BR_IsPath (BR_StringPtr name, BS_StringLength cnt);
  282.  
  283. /*
  284. BR_EXPORTENTRY (BR_FileSystemError) BR_ParseFileName (
  285.     BR_StringPtr nameToParse, 
  286.     BS_StringLength nameLen, 
  287.     BR_StringPtr drive, 
  288.     unsigned short FAR * maxDriveLen, 
  289.     BR_StringPtr path, 
  290.     unsigned short FAR * maxPathLen, 
  291.     BR_StringPtr file, 
  292.     unsigned short FAR * maxFileLen, 
  293.     BR_StringPtr fileRoot, 
  294.     unsigned short FAR * maxFileRootLen, 
  295.     BR_StringPtr fileExt, 
  296.     unsigned short FAR * maxFileExtLen, 
  297.     short FAR * driveID, 
  298.     long FAR * dirID);
  299. */
  300.  
  301. BR_EXPORTENTRY (BR_FileSystemError) BR_JoinFileName(
  302.     BR_BedString joinedName, 
  303.     BS_StringLength maxLen, 
  304.     BR_BedString drive, 
  305.     BR_BedString path, 
  306.     BR_BedString file);
  307.  
  308.  
  309. BR_EXPORTENTRY (BR_FileSystemError) BR_Write(
  310.     BR_FileHandle hf, 
  311.     void FAR * p,
  312.     BR_FileMeasurmentUnit cnt,
  313.     BR_FileMeasurmentUnit FAR * actcnt);
  314.  
  315.  
  316. BR_EXPORTENTRY (BR_FileSystemError) BR_Read(
  317.     BR_FileHandle hf,
  318.     void FAR * p, 
  319.     BR_FileMeasurmentUnit cnt,
  320.     BR_FileMeasurmentUnit FAR * actcnt);
  321.  
  322.  
  323. BR_EXPORTENTRY (BR_FileSystemError) BR_SetEof(
  324.     BR_FileHandle hf,
  325.     BR_FileMeasurmentUnit pos);
  326.  
  327. BR_EXPORTENTRY (BR_FileSystemError) BR_GetEof(
  328.     BR_FileHandle hf,
  329.     BR_FileMeasurmentUnit FAR * eofPos);
  330.  
  331. BR_EXPORTENTRY (BR_Boolean) BR_Eof (
  332.     BR_FileHandle hf,
  333.     BR_FileSystemErrorPtr err);
  334.  
  335. BR_EXPORTENTRY (BR_FileSystemError) BR_SeekPosition(
  336.     BR_FileHandle hf,
  337.     BR_FileMeasurmentUnit dist,
  338.     BR_FilePositionMode method,
  339.     BR_FileMeasurmentUnit FAR * pos);
  340.  
  341. BR_EXPORTENTRY (BR_FileSystemError) BR_GetPosition(
  342.     BR_FileHandle hf, 
  343.     BR_FileMeasurmentUnit FAR * pos);
  344.  
  345. #ifdef __cplusplus
  346. }
  347. #endif
  348.  
  349. #endif
  350.  
  351.